const app = getApp()
app.ctx = wx.createCanvasContext('firstCanvas') //把绘图方法挂载到小程序实例方法
var is_sup = false
// wx.getSystemInfo({
// 	success: function(res) {
// 		var info = wx.getSystemInfoSync() // info.SDKVersion == "1.11.0"
// 		if (info.SDKVersion > "1.9.90") { // 此时条件为false，无法进入if分支
// 			is_sup = false
// 		}
// 	}
// })
function drawText(obj) {
	app.ctx.save();
	app.ctx.setFillStyle(obj.color);
	app.ctx.setFontSize(obj.size * 0.552);
	app.ctx.setTextAlign(obj.align);
	app.ctx.setTextBaseline(obj.baseline);
	if (obj.bold) {
		app.ctx.fillText(obj.text, obj.x * 0.552, obj.y * 0.552 - 0.5);
		app.ctx.fillText(obj.text, obj.x * 0.552 - 0.5, obj.y * 0.552);
	}
	app.ctx.fillText(obj.text, obj.x * 0.552, obj.y * 0.552);
	if (obj.bold) {
		app.ctx.fillText(obj.text, obj.x * 0.552, obj.y * 0.552 + 0.5);
		app.ctx.fillText(obj.text, obj.x * 0.552 + 0.5, obj.y * 0.552);
	}
	app.ctx.restore();
}

function textWrap(obj) {
	var lineWidth = 0;
	var lastSubStrIndex = 0
	for (let i = 0; i < obj.text.length; i++) { // 如果支持 measureText				
		var re = new RegExp("^[A-Za-z0-9]+$");

		if (re.test(obj.text[i])) {
			lineWidth += (obj.size * 0.552) / 2
		} else {
			lineWidth += obj.size * 0.552
		}


		if (lineWidth > (obj.width * 0.552) - ((obj.size * 0.552 / 2))) {
			var text = {
				x: obj.x,
				y: obj.y,
				color: obj.color,
				size: obj.size,
				align: 'left',
				baseline: 'middle',
				text: obj.text.substring(lastSubStrIndex, i),
				bold: obj.bold
			}
			//console.log(text.text)
			drawText(text)
			obj.y += obj.height; //字体的高度
			lineWidth = 0;
			lastSubStrIndex = i;
		}
		if (i == obj.text.length - 1) { //绘制剩余部分
			var text = {
				x: obj.x,
				y: obj.y,
				color: obj.color,
				size: obj.size,
				align: 'left',
				baseline: 'middle',
				text: obj.text.substring(lastSubStrIndex, i + 1),
				bold: obj.bold
			}
			drawText(text)
		}
	}
}

function drawImg(obj) { //绘制图片
	app.ctx.drawImage(obj.src, obj.x * 0.552, obj.y * 0.552, obj.width * 0.552, obj.height * 0.552)
}

function drawAvatar(obj) { //绘制圆形图片
	app.ctx.save();
	app.ctx.beginPath(); //开始绘制
	//先画个圆   前两个参数确定了圆心 （x,y） 坐标  第三个参数是圆的半径  四参数是绘图方向  默认是false，即顺时针
	app.ctx.arc((obj.x + (obj.width / 2)) * 0.552, (obj.y + (obj.width / 2)) * 0.552, (obj.width / 2) * 0.552, 0,
		Math.PI *
		2, false);
	//app.ctx.setFillStyle('#ff0000')
	app.ctx.fill() //必须要 要不然没有效果
	app.ctx.clip(); //画好了圆 剪切  原始画布中剪切任意形状和尺寸。一旦剪切了某个区域，则所有之后的绘图都会被限制在被剪切的区域内 这也是我们要save上下文的原因		
	app.ctx.drawImage(obj.src, obj.x * 0.552, obj.y * 0.552, obj.width * 0.552, obj.height * 0.552); // 推进去图片，必须是https图片
	app.ctx.restore(); //恢复之前保存的绘图上下文 恢复之前保存的绘图上下午即状态 还可以继续绘制		
}

function heightComputed(text, width, size, lineHeight) { //计算行高
	var line_add = 0
	var lineWidth = 0;
	var lastSubStrIndex = 0
	for (let i = 0; i < text.length; i++) { // 		
		var re = new RegExp("^[A-Za-z0-9]+$"); //判断是不是英文

		if (re.test(text[i])) {
			lineWidth += (size * 0.552) / 2
		} else {
			lineWidth += size * 0.552
		}


		if (lineWidth > (width * 0.552) - ((size * 0.552 / 2))) {
			line_add += 1
			lineWidth = 0
			lastSubStrIndex = i
		}
		if (i == text.length - 1) {
			console.log(lastSubStrIndex, i)
			if (lastSubStrIndex <= i) {
				line_add += 1
			}
		}
	}
	//console.log(line_add)
	return (line_add) * lineHeight
}

function widthComputed(text, size) {
	var lineWidth = 0;
	for (let i = 0; i < text.length; i++) {
		var re = new RegExp("^[A-Za-z0-9]+$"); //判断是不是英文

		if (re.test(text[i])) {
			lineWidth += (size * 0.552) / 2
		} else {
			lineWidth += size * 0.552
		}

	}
	return lineWidth
}
module.exports = {
	drawText,
	textWrap,
	drawImg,
	drawAvatar,
	heightComputed,
	widthComputed
}
